import { v4 as uuidv4} from "uuid";

export interface Icon {
  code?: string;
  /**
   * 0： None
   * 1： ElementIcon
   * 2： Svg
   * 3： ImageUrl
   */
  type: 0 | 1 | 2 | 3;
  color?: string;
}
export enum TagViewContentType {
  VueInstance,
  Iframe,
}
export interface IframeContent {
  /** iframe 的标识 */
  id: string;
  /** iframe 显示的地址 */
  url: string;
}
export class TagViewContent {
  /** 组件名 */
  componentName?: string;
  /** 显示的URL */
  url: string;
  /** 真实的地址 */
  realUrl?: string;
  /** 内容类型 */
  type? = TagViewContentType.VueInstance;
}
export class TagView extends TagViewContent {
  uuid: string;
  /** 名称  */
  title: string;
  /** 是否固定 */
  isFixed?: boolean;
  /** 显示的图标 */
  icon?: Icon;

  constructor() {
    super();
    this.uuid = uuidv4();
  }
}
export class CacheTagView {
  constructor(componentName: string, expireTime: Date) {
    this.componentName = componentName;
    this.expireTime = expireTime;
  }
  /** 缓存组件的名称 */
  componentName: string;
  /** 过期时间 */
  expireTime: Date;

  /** 是否已过期 */
  get isExpire() {
    return new Date().getTime() - this.expireTime.getTime() > 0;
  }
}
